草庐IT

Java in 运算符

全部标签

Java 8 - 三元运算符返回函数不编译

谁能告诉我为什么这不能编译?publicclassTestClass{privatebooleandoThis=false;protectedvoidfooThat(){}protectedvoidfooThis(){}publicvoidexecute(){(doThis?this::fooThis:this::fooThat).run();}} 最佳答案 你的意图很可能是(doThis?this::fooThis:(Runnable)(this::fooThat)).run();Java无法仅从方法名称中推断出您希望?:返回什么

java - 模式匹配 Java 正则表达式 - "One-or-more"运算符

如何在Java的正则表达式中使用“一个或多个”运算符?例如,我想匹配这个:((a)(b)(c))-匹配((a))-匹配其中a,b,c是任意字符或数字这个表达式的基本描述是一组括号中的一组括号,其中包含由一个空格分隔的所有集合 最佳答案 你想要类似的东西\((\(\w*\))+\)为了更清楚地说明它是如何工作的,在视觉上展开一下:\(#outerbracket(#startofgroup\(#innerbracket\w*#0ormorewordcharacters([0-9a-zA-Z_])\)#innerbracket)#endo

java - StringBuilder vs.concat vs. "+"运算符在 eclipse 中的相对性能与命令行不同?

我正在阅读有关Java编译器如何在可能的情况下将与“+”运算符连接的字符串编译为StringBuilder实例的信息,以及这如何使使用简单的“+”运算符更好,因为它们compiletothesamecode.(除非您在while循环中构建字符串,在这种情况下显然最好使用StringBuilder。)我还读到字符串上的.concat方法是最差的choiceallthetime(以至于它被Findbugs变成了一个错误!)。所以我决定自己在eclipse中编写一个小的java类来测试它。我的结果让我有点吃惊。我发现,如果我在eclipse中与在命令行中遵守并运行它们,则不同的方法相对更快或

java - 移位运算符 - 操作数必须可转换为整数基元?

我正在准备参加Java考试,并且正在阅读“OCAJavaSE8程序员学习指南(考试1Z0-808)”。在运营商部分,我发现了这句话:ShiftOperators:Ashiftoperatortakestwooperandswhosetypemustbeconvertibletoanintegerprimitive.我觉得很奇怪,所以我用long测试了它:publicclassHelloWorld{publicstaticvoidmain(String[]args){longtest=3147483647L;System.out.println(test它成功了,没有编译器错误,结果是正

Java 三元运算符似乎始终将整数转换为 int

我的一个学生在使用有时会导致null的三元运算符时遇到空指针异常。我想我理解这个问题,但它似乎是由不一致的类型推断引起的。或者换句话说,我觉得这里的语义不一致,在不改变他的方法的情况下应该可以避免错误。这个问题与Anotherquestionaboutternaryoperators相似,但不同。.在那个问题中,必须将nullInteger强制为int,因为函数的返回值是int。但是,在我的学生代码中情况并非如此。这段代码运行良好:Integerx=(5>7)?3:null;x的值为空。没有NPE。在这种情况下,编译器可以计算出三元运算符的结果需要是Integer,因此它将3(一个in

java - == 运算符在 Java 中是如何实现的?

具体来说,在对象引用相等的情况下,==运算符的作用是什么?如果引用在比较时评估为相同的对象地址,比较是否返回true?还是利用两个引用的hashCode值来判断对象是否相同?这里说的很具体,我想知道JVM管理的数据结构是通过==操作引用的,用于引用比较。==是否依赖OOP执行引用比较?对我来说不幸的是,JLSdoesnotdefinehowthe==operatormustwork.JavaAPI文档没有提到==应该做什么(它们用于类,对吧?)PS:我对hashcodeuniqueness上的这个问题有点好奇,并且更愿意了解SunJVM(或OpenJDK)如何实现==运算符。

java - 是否有等同于 Java 正则表达式中的交集 (&&) 运算符的 JavaScript 正则表达式?

在Java正则表达式中,您可以在字符类中使用交集运算符&&来简洁地定义它们,例如[a-z&&[def]]//d,e,orf[a-z&&[^bc]]//athroughz,exceptforbandcJavaScript中是否有等效项? 最佳答案 IsthereanequivalentinJavaScript?简单的回答:不,没有。它是特定的Java语法。参见:RegularExpressionsCookbook由JanGoyvaerts和StevenLevithan撰写。这是asneak-peektotherelevantsecti

java - 奇怪的 Java 行为。三元运算符

为什么这段代码有效?FloattestFloat=null;Floatf=true?null:0f;为什么会抛出异常?FloattestFloat=null;Floatf=true?testFloat:0f;但最奇怪的是,这段代码也运行成功,没有任何异常:FloattestFloat=null;Floatf=testFloat;Java的三元运算符似乎改变了行为。谁能解释一下这是为什么? 最佳答案 行为在JLS-ConditionalOperator中指定:Ifoneofthesecondandthirdoperandsisofpr

多个 + 和 - 运算符的 Java 优先级

这更像是一个理解Java对算术运算求值的理论问题。由于+和-具有相同的优先级,我不太明白Java如何计算以下表达式(其中有多个+和-两个操作数之间的运算符)。publicstaticvoidmain(String[]args){inta=1;intb=2;System.out.println(a+-b);//resultsin-1System.out.println(a-+b);//resultsin-1System.out.println(a+-+b);//resultsin-1System.out.println(a-+-b);//resultsin3System.out.prin

java - 如何通过 JDBC 使用包含问号 "?"的 PostgreSQL JSON(B) 运算符

PostgreSQL知道一些时髦的ASCII艺术运算符,它们在名称中使用问号字符,例如theseJSONoperators:?字符串是否作为JSON值中的顶级键存在??|这些数组字符串是否作为顶级键存在??&所有这些数组字符串都作为顶级键存在吗?问题是官方的PostgreSQLJDBC驱动程序似乎无法正确解析包含此类运算符的SQL字符串。它假设问号是一个普通的JDBC绑定(bind)变量。以下代码...try(PreparedStatements=c.prepareStatement("select'{}'::jsonb?|array['a','b']");ResultSetrs=s.